home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 8: LINUX Games / Linux Cubed Series 8 - LINUX Games.iso / games / x11 / rpg / crossfir.92 / crossfir / crossfire-0.92.5 / include / spells.h < prev    next >
C/C++ Source or Header  |  1996-07-24  |  5KB  |  165 lines

  1. /*
  2.  * static char *rcsid_spells_h =
  3.  *   "$Id: spells.h,v 1.24 1996/01/02 11:16:20 master Exp $";
  4.  */
  5.  
  6. /*
  7.     CrossFire, A Multiplayer game for X-windows
  8.  
  9.     Copyright (C) 1992 Frank Tore Johansen
  10.  
  11.     This program is free software; you can redistribute it and/or modify
  12.     it under the terms of the GNU General Public License as published by
  13.     the Free Software Foundation; either version 2 of the License, or
  14.     (at your option) any later version.
  15.  
  16.     This program is distributed in the hope that it will be useful,
  17.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  18.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19.     GNU General Public License for more details.
  20.  
  21.     You should have received a copy of the GNU General Public License
  22.     along with this program; if not, write to the Free Software
  23.     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  24.  
  25.     The author can be reached via e-mail to frankj@ifi.uio.no.
  26. */
  27.  
  28. extern Fontindex fbface[];
  29. extern Fontindex lface[];
  30. extern Fontindex  mmface[];
  31. extern int turn_bonus[];
  32. extern int fear_bonus[];
  33. extern int cleric_chance[];
  34.  
  35. extern spell spells[NROFREALSPELLS];
  36.  
  37. /* When adding new spells, don't insert into the middle of the list - 
  38.  * add to the end of the list.  Some archetypes and treasures require
  39.  * the spell numbers to be as they are.
  40.  */
  41.  
  42. enum spellnrs {
  43.   SP_BULLET,          SP_S_FIREBALL,         SP_M_FIREBALL,    /*0*/
  44.   SP_L_FIREBALL,      SP_BURNING_HANDS,
  45.  
  46.   SP_S_LIGHTNING,     SP_L_LIGHTNING,         SP_M_MISSILE,    /*5*/
  47.   SP_BOMB,          SP_GOLEM,
  48.  
  49.   SP_FIRE_ELEM,          SP_EARTH_ELEM,         SP_WATER_ELEM,    /*10*/
  50.   SP_AIR_ELEM,          SP_D_DOOR,         
  51.  
  52.   SP_EARTH_WALL,      SP_PARALYZE,         SP_ICESTORM,    /*15*/
  53.   SP_MAGIC_MAPPING,   SP_TURN_UNDEAD,
  54.  
  55.   SP_FEAR,          SP_POISON_CLOUD,         SP_WOW,        /*20*/
  56.   SP_DESTRUCTION,     SP_PERCEIVE,         
  57.  
  58.   SP_WOR,          SP_INVIS,             SP_INVIS_UNDEAD,    /*25*/
  59.   SP_PROBE,          SP_LARGE_BULLET,         
  60.  
  61.   SP_IMPROVED_INVIS,  SP_HOLY_WORD,         SP_MINOR_HEAL,    /*30*/
  62.   SP_MED_HEAL,          SP_MAJOR_HEAL,
  63.  
  64.   SP_HEAL,          SP_CREATE_FOOD,         SP_EARTH_DUST,    /*35*/
  65.   SP_ARMOUR,          SP_STRENGTH,
  66.  
  67.   SP_DEXTERITY,          SP_CONSTITUTION,         SP_CHARISMA,    /*40*/
  68.   SP_FIRE_WALL,          SP_FROST_WALL,
  69.  
  70.   SP_PROT_COLD,          SP_PROT_ELEC,         SP_PROT_FIRE,    /*45*/
  71.   SP_PROT_POISON,     SP_PROT_SLOW,
  72.  
  73.   SP_PROT_PARALYZE,   SP_PROT_DRAIN,         SP_PROT_MAGIC,    /*50*/
  74.   SP_PROT_ATTACK,     SP_LEVITATE,
  75.  
  76.   SP_SMALL_SPEEDBALL, SP_LARGE_SPEEDBALL,    SP_HELLFIRE,    /*55*/
  77.   SP_FIREBREATH,      SP_LARGE_ICESTORM,
  78.  
  79.   SP_CHARGING,        SP_POLYMORPH,        SP_CANCELLATION, /*60*/
  80.   SP_CONFUSION,        SP_MASS_CONFUSION,
  81.  
  82.   SP_PET,        SP_SLOW,        SP_REGENERATE_SPELLPOINTS,  /*65*/
  83.   SP_CURE_POISON,    SP_PROT_CONFUSE,
  84.  
  85.   SP_PROT_CANCEL,    SP_PROT_DEPLETE,    SP_ALCHEMY,    /*70*/
  86.   SP_REMOVE_CURSE,    SP_REMOVE_DAMNATION,    
  87.  
  88.   SP_IDENTIFY,        SP_DETECT_MAGIC,    SP_DETECT_MONSTER,  /* 75 */
  89.   SP_DETECT_EVIL,    SP_DETECT_CURSE,    
  90.  
  91.   SP_HEROISM,        SP_AGGRAVATION,        SP_FIREBOLT,          /* 80 */
  92.   SP_FROSTBOLT,        SP_SHOCKWAVE,
  93.  
  94.   SP_COLOR_SPRAY,    SP_HASTE,        SP_FACE_OF_DEATH,    /*85*/
  95.   SP_BALL_LIGHTNING,    SP_METEOR_SWARM,
  96.  
  97.   SP_METEOR,        SP_MYSTIC_FIST,        SP_RAISE_DEAD,        /*90*/
  98.   SP_RESURRECTION,    SP_REINCARNATION,     
  99.  
  100. /* mlee's spells*/    
  101.  
  102.   SP_IMMUNE_COLD,    SP_IMMUNE_ELEC,        SP_IMMUNE_FIRE,        /*95*/
  103.   SP_IMMUNE_POISON,    SP_IMMUNE_SLOW,
  104.  
  105.  
  106.   SP_IMMUNE_PARALYZE,    SP_IMMUNE_DRAIN,    SP_IMMUNE_MAGIC,    /*100*/
  107.   SP_IMMUNE_ATTACK,    SP_INVULNERABILITY,
  108.  
  109.   SP_PROTECTION,                            /*105*/
  110.         /*Some more new spells by peterm */
  111.             SP_RUNE_FIRE,        SP_RUNE_FROST,        
  112.   SP_RUNE_SHOCK,    SP_RUNE_BLAST,
  113.  
  114.   SP_RUNE_DEATH,    SP_RUNE_MARK,        SP_BUILD_DIRECTOR,    /*110*/
  115.   SP_CHAOS_POOL,    SP_BUILD_BWALL,
  116.  
  117.   SP_BUILD_LWALL,    SP_BUILD_FWALL,        SP_RUNE_MAGIC,        /*115*/
  118.   SP_RUNE_DRAINSP,    SP_RUNE_ANTIMAGIC,
  119.  
  120.   SP_RUNE_TRANSFER,    SP_TRANSFER,        SP_MAGIC_DRAIN,        /*120*/
  121.   SP_COUNTER_SPELL,    SP_DISPEL_RUNE,
  122.  
  123.   SP_CURE_CONFUSION,    SP_RESTORATION,        SP_SUMMON_EVIL_MONST,    /*125*/
  124.   SP_COUNTERWALL,    SP_CAUSE_LIGHT,
  125.  
  126.   SP_CAUSE_MEDIUM,    SP_CAUSE_HEAVY,        SP_CHARM,        /*130*/
  127.   SP_BANISHMENT,    SP_CREATE_MISSILE,
  128.  
  129.   SP_SHOW_INVIS,    SP_XRAY,        SP_PACIFY,        /*135*/
  130.   SP_SUMMON_FOG,    SP_STEAMBOLT,
  131.  
  132.   /* lots of new cleric spells, many need MULTIPLE_GODS defined to be
  133.    * very usefull - b.t. */
  134.   SP_COMMAND_UNDEAD,    SP_HOLY_ORB,        SP_SUMMON_AVATAR,    /*140*/
  135.   SP_HOLY_POSSESSION,    SP_BLESS,        
  136.  
  137.   SP_CURSE,         SP_REGENERATION,    SP_CONSECRATE,        /*145*/
  138.   SP_SUMMON_CULT,    SP_CAUSE_CRITICAL, 
  139.  
  140.   SP_HOLY_WRATH,    SP_RETRIBUTION,        SP_FINGER_DEATH,    /*150*/
  141.   SP_INSECT_PLAGUE,    SP_HOLY_SERVANT,
  142.   
  143.   SP_WALL_OF_THORNS,    SP_STAFF_TO_SNAKE,    SP_LIGHT,          /*155*/
  144.   SP_DARKNESS,        SP_NIGHTFALL,
  145.  
  146.   SP_DAYLIGHT,        SP_SUNSPEAR,        SP_FAERY_FIRE,         /*160*/
  147.   SP_CURE_BLINDNESS,    SP_DARK_VISION                
  148.  
  149. };
  150.  
  151.  
  152. #define IS_SUMMON_SPELL(spell) (((spell) > SP_BOMB && (spell) < SP_D_DOOR) \
  153.     || ((spell) == SP_MYSTIC_FIST) || ((spell) == SP_SUMMON_AVATAR) \
  154.     || ((spell) == SP_HOLY_SERVANT))
  155.  
  156. #define PATH_SP_MULT(op,spell) (((op->path_attuned & s->path) ? 0.8 : 1) * \
  157.                 ((op->path_repelled & s->path) ? 1.25 : 1))
  158. #define PATH_TIME_MULT(op,spell) (((op->path_attuned & s->path) ? 0.8 : 1) * \
  159.                 ((op->path_repelled & s->path) ? 1.25 : 1))
  160.     
  161. archetype *spellarch[NROFREALSPELLS];
  162. extern char *range_name[range_size];
  163. extern spell_parameters SP_PARAMETERS[];
  164. extern char *spellpathnames[NRSPELLPATHS];
  165.